Coc.nvimを触ってみようアドベントカレンダー 10日目 – coc-metals
Coc.nvimを触ってみよう Advent Calendar 2021 10日目です。
今回は coc-metals
です。
coc-metals について
Scalaの言語サーバ Metals
のcoc.nvim拡張です。前提として、必要なライブラリの一部に執筆時点でARM64版が存在していないためAMD64版(Rosetta2)ベースとなります。
coc-metals をインストールする
今回の手続きはsbtベースで進めていきます。
:CocInstall coc-metals
Java未導入であればインストールします。当記事執筆時点でのmetalsは v0.10.9 にてscala 2.13.7 をサポートしているため、JDKは 8, 11, 17, 18 のいずれかが必要となります。
sbt、bloop、GraalVMをインストールします。すでに導入済みのものに関してはパスして問題ありません。
brew install sbt brew install scalacenter/bloop/bloop brew install --cask graalvm/tap/graalvm-ce-java17 sudo xattr -r -d com.apple.quarantine /Library/Java/JavaVirtualMachines/graalvm-ce-java17-21.3.0/
metals導入はcoc-settings.jsonにversionを指定するだけでOKです。最新バージョンについてはmetalsのドキュメントを参照してください。
{ "metals.serverVersion": "0.10.9", "metals.statusBarEnabled": true }
これはバージョンあるいはSNAPSHOTの指定のいずれでも問題ありません。保存後にscalaファイルを開くとmetalsのインストールを開始します。
インストールが完了すると以下の表示となります。
そしてvimで開く時にsbt及びscファイルを開いた時にscalaとして処理が適用されるよう、以下の設定をinit.vimに入れておきます。
au BufRead,BufNewFile *.sbt,*.sc set filetype=scala
使ってみる
プロジェクトディレクトリ内でneovimにてscalaファイルを開くとビルドを促されるため実行します。例はsbtのケース。プロジェクト構成によっては時間が掛かります。
なかなか終わらない場合は、以下のコマンドで調査してみましょう。
:CocCommand metals.doctor-run
正常な場合は以下の表示が出力されるはずです。
あとがき
動作が正常にならない場合は衝突するライブラリを導入している可能性があります。以前同じく紹介した記事にて衝突するライブラリの除去について触れているので参考にしてください。
M1環境の場合は現時点ではRosetta2が必須となります。セットアップで若干手間はかかりますが、neovim上で軽快に動くのでおすすめです。